import * as THREE from "three";

// 创建立方体几何体（BoxGeometry）
// 参数分别为：宽度（X轴）、高度（Y轴）、深度（Z轴） → 均设为 100，生成一个 100×100×100 的立方体
const boxGeometry = new THREE.BoxGeometry(100, 100, 100);

//BoxGeometry 想渲染线模型，不能直接用，要用 EdgesGeometry 转换成线框模型才行。

// 用 LineDashedMaterial 虚线材质，设置虚线的大小。

// 调用下 computeLineDistances 方法来计算虚线。

// 提取立方体的边缘线几何体（EdgesGeometry）
// 作用：从基础几何体（如立方体）中提取所有边缘线段，生成线框结构的几何体
const geometry = new THREE.EdgesGeometry(boxGeometry);

// 虚线材质（LineDashedMaterial：专门用于绘制虚线的材质）
const material = new THREE.LineDashedMaterial({
  color: new THREE.Color("orange"), // 虚线颜色设置为橙色
  dashSize: 10, // 虚线中每段实线段的长度（单位：与几何体尺寸相关）
  gapSize: 10, // 虚线中相邻实线段之间的间隔长度
});

// 创建线对象（Line）：将边缘几何体与虚线材质结合，生成可渲染的虚线框
const line = new THREE.Line(geometry, material);
// 计算线的距离属性（LineDashedMaterial 需要此方法来正确计算虚线分段）
// 必须调用此方法，否则虚线效果可能无法正常显示
line.computeLineDistances();

// 输出线对象到控制台（调试用，可查看几何体、材质等详细属性）
console.log(line);

// 导出线对象，供其他文件导入使用（如 index.js 中可通过 import 引入此虚线框）
export default line;
